package net.xdclass.component;

import net.xdclass.vo.PayInfoVO;

/**
 * @author Administrator
 * @description 支付策略上下文
 * @since 2023-08-24 22:56
 */
public class PayStrategyContext {

    private PayStrategy payStrategy;

    public PayStrategyContext(PayStrategy payStrategy) {
        this.payStrategy = payStrategy;
    }


    /**
     * 根据策略对象执行不同下单接口
     *
     * @return
     */
    public String executeUnifiedOrder(PayInfoVO payInfoVO) {
        return payStrategy.unifiedOrder(payInfoVO);
    }

    /**
     * 根据策略对象执行不同退款
     *
     * @return
     */
    public String executeRefund(PayInfoVO payInfoVO) {
        return payStrategy.refund(payInfoVO);
    }

    /**
     * 关闭订单
     *
     * @return
     */
    public String executeCloseOrder(PayInfoVO payInfoVO) {
        return payStrategy.closeOrder(payInfoVO);
    }


    /**
     * 查询订单状态
     *
     * @return
     */
    public String executeQueryStatus(PayInfoVO payInfoVO) {
        return payStrategy.queryPayStatus(payInfoVO);
    }

}
